package com.sino.second.business;

import java.io.File;
import java.util.List;

import com.sino.model.ExpertModel;
import com.sino.second.model.ExpertsReviewModel3;
import com.sino.second.model.VoteModel;
import com.sino.second.model.XmReviewResults2;
import com.sino.second.model.XmReviewResults3;

public interface IExpertsVoteService {
	/**
	 * 列出所有通过复审的项目信息
	 * 
	 * @return
	 */
	public List<XmReviewResults2> listAllPastSecondReviewProject(String hqlWhere);
	/**
	 * 根据专家id查找出该专家评审过的所有项目
	 * @param expertId
	 * @return
	 */
	public List<ExpertsReviewModel3> listThirdReviewProjectByExpert(String expertId,String hqlWhere);
	/**
	 * 根据评审组id列出相应的专家
	 * @param xmpsmcId
	 * @return
	 */
	public List<ExpertModel> listReviewExpertByXmpsmc(String xmpsmcId,String hqlWhere);
	/**
	 * 保存或者更新一条专家投票记录
	 * @param expertsReviewModel3
	 * @param jydjId
	 * @param pxdjId
	 */
	public void saveOrUpdateExpertsReviewModel3(ExpertsReviewModel3 expertsReviewModel3,String jydjId,String pxdjId,String hqlWhere);
	/**
	 * 查询列出委员会投票计算结果
	 * 
	 * @return
	 */
	public List<VoteModel> listTblXmfs3VoteResult(String hqlWhere);
	/**
	 * 排序查询列出委员会投票计算结果
	 * 
	 * @return
	 */
	public List<VoteModel> listTblXmfs3VoteResultSort(String hqlWhere);
	/**
	 * 通过评审组列出被分配的专家数
	 * @return
	 */
	public int listAssignExpertCountByXmpsmc(String xmpsmcId,String hqlWhere);
	/**
	 * 列出已经投票的专家数
	 * @return
	 */
	public int listAlreadyVoteExpertCount(String hqlWhere);
	/**
	 * 保存或者更新一条投票信息到大评委结果表
	 * @param XmReviewResults3
	 * @param jydjId
	 * @param pxdjId
	 */
	public void saveOrUpdateXmReviewResults3(XmReviewResults3 xmReviewResults3,String jydjId,String pxdjId,String hqlWhere);
	/**
	 * 查询列出评委会结果表记录
	 * @return
	 */
	public List<XmReviewResults3> listAllXmReviewResults3(String hqlWhere);
	/**
	 * 清空大评委结果表
	 *
	 */
	public void delTblXmjg3(String hqlWhere);
	/**
	 * 导出最终结果表数据
	 * @param fileName
	 * @param xmReviewResults3List
	 * @return
	 */
	public File exportVoteResult(String fileName, List<XmReviewResults3> xmReviewResults3List);
}
